package com.yuanfeng.order.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanfeng.commoms.dto.PageUserTokenBeanDTO;
import com.yuanfeng.commoms.dto.userms.UserTokenBeanDTO;
import com.yuanfeng.commoms.util.ResponseResult;
import com.yuanfeng.order.dto.FinancialSettlementDTO;
import com.yuanfeng.order.dto.WaitOrderDTO;
import com.yuanfeng.order.entity.OrderSettlementEntity;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.ParseException;
import java.util.Map;

/**
 *
 */
public interface OrderSettlementService extends IService<OrderSettlementEntity> {

    /**
     *结算单对应订单导出
     * @param paraMap
     * @param response
     * @return
     * @throws IOException
     * @throws ParseException
     */

    ResponseResult exportExcel(Map<String, Object> paraMap, HttpServletResponse response) throws IOException, ParseException;


    /**
     *商家提现未提现金额查询导出
     * @param param
     * @return
     */
    ResponseResult getMerchantAmountExp(FinancialSettlementDTO param);

    /**
     * 商家后台查询结算单列表
     * @param paraMap
     * @return
     */
    ResponseResult businessList(Map<String, String> paraMap);

    /**
     * 商家导出excel
     * @param paraMap
     * @return
     */
    ResponseResult exportexcelSettlementBusiness(Map<String, String> paraMap);

    /**
     * 商家结算详情
     * @param paraMap
     * @return
     */
    ResponseResult settlementDetail(Map<String, String> paraMap);

    /**
     * 商家结算单对应订单
     * @param paraMap
     * @return
     */
    ResponseResult listBaseInfo(Map<String, Object> paraMap);

    /**
     * 商家结算单对应退单
     * @param paraMap
     * @return
     */
    ResponseResult listReutrnOrder(Map<String, Object> paraMap);

    /**
     * 商家导出订单excel
     * @param paraMap
     * @return
     */
    ResponseResult exportexcelSettlementBaseInfo(Map<String, Object> paraMap);

    /**
     * 商家导出退单excel
     * @param paraMap
     * @return
     */
    ResponseResult exportexcelSettlementReturnOrder( Map<String, Object> paraMap);

    /**
     * 商家自销等待结算金额
     * @param param
     * @return
     */
    ResponseResult waitSettlement(UserTokenBeanDTO param);

    /**
     * 商家等待结算对应订单列表
     * @param param
     * @return
     */
    ResponseResult waitOrderList(WaitOrderDTO param);

    /**
     * 商家等待结算对应罚款列表
     * @param param
     * @return
     */
    ResponseResult waitFineList(PageUserTokenBeanDTO param);

    /**
     * 商家等待结算对应退款列表
     * @param param
     * @return
     */
    ResponseResult waitReturnList(WaitOrderDTO param);

    /**
     * 商家等待结算对应退款列表
     * @param param
     * @return
     */
    ResponseResult waitDealerReturnList(WaitOrderDTO param) throws IllegalAccessException;

    /**
     * 商家提现未提现金额查询
     * @param param
     * @return
     */
    ResponseResult getMerchantAmount(FinancialSettlementDTO param) throws IllegalAccessException;

    /**
     * 修改结算信息(店铺名)
     *
     * @param map
     * @return
     */
    ResponseResult updateOrderSettlementByMap(Map<String, Object> map);

    /**
     * 平台查询 结算单对应的退单列表 导出
     *
     * @param paraMap
     * @return
     */
    ResponseResult platFormReturnorderinfoExcel(Map<String, Object> paraMap);


    /**
     * 平台查询 结算单对应的退单列表
     *
     * @param paraMap
     * @return
     */
    ResponseResult platFormReturnorderinfo(Map<String, Object> paraMap);


    /**
     * 平台查询 结算单对应订单
     *
     * @param paraMap
     * @return
     */
    ResponseResult listBaseorderinfo(Map<String, Object> paraMap);


    /**
     * 平台查询 结算单对应订单
     *
     * @param paraMap
     * @return
     */
    ResponseResult platFormSettlementdetail(Map<String, Object> paraMap);


    /**
     * 平台查询 结算列表
     *
     * @param map
     * @return
     */
    ResponseResult queryPlatFormListSettlement(Map<String, Object> map);

    /**
     * 平台查询 结算列表 导出
     *
     * @param map
     * @return
     */
    ResponseResult queryPlatFormListSettlementExcel(Map<String, Object> map);

    /**
     * 供应商 对账单 退单列表
     * @param param
     * @return
     */
    ResponseResult waitSupperReturnList(WaitOrderDTO param);

    /**
     * 供应商 对账单 订单列表
     * @param param
     * @return
     */
    ResponseResult waitSupperOrderList(WaitOrderDTO param);

    /**
     * 供应商 对账单 结算公式
     * @param param
     * @return
     */
    ResponseResult supplyWaitSettlement(UserTokenBeanDTO param);


    /**
     * 商家等待结算对应对账单 订单列表
     */
    ResponseResult waitDealerOrderList(WaitOrderDTO param) throws IllegalAccessException;



    /**
     * 商家经销等待结算金额
     *
     * @param map
     * @return
     */
   ResponseResult dealerWaitSettlement(Map<String, Object> map);

    /**
     * 生成结算单订单
     *
     * @param map
     * @return
     */
    ResponseResult confirmSettlement(Map<Object, Object> map);
}
